package com.onadake.web.service;

import java.util.Set;

import com.onadake.domain.query.Criterium;
import com.onadake.web.domain.UserFilterColumns;
import com.onadake.web.domain.UserProfile;

/**
 * Defines high level functionality for manipulating with users.
 * 
 * @author radek.hecl
 *
 */
public interface UserService {

    /**
     * Counts how many users satisfies the criteria.
     * 
     * @param criteria criteria to be satisfied
     * @return criteria how many users satisfies the criteria
     */
    public long countUsers(Set<Criterium<UserFilterColumns>> criteria);
    
    /**
     * Inserts the specified user.
     * 
     * @param profile user profile
     * @param password password to the account
     */
    public void insertUser(UserProfile profile, String password);
    
}
